/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package miage.sessions.nonPersistant;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;
import miage.beans.ProduitPresentation;

/**
 *
 * @author Pepito
 */
@Stateful
public class Cart {
    private List<ProduitPresentation> produits = new ArrayList<ProduitPresentation>();
    private int quantite = 0;
    private List<Double> prixProduits = new ArrayList<Double>();
    private double prixTotal = 0.0;
    
    public void addProduit(ProduitPresentation p){
        System.out.println("addProduit dans CART");
        if(p!= null){
            ajoutProduitDansPanier(p);
        }
        System.out.println("produit inséré");
    }
    public void deleteProduit(ProduitPresentation p){
        deleteProduitDansPanier(p);
    }
    public void clearProduits(){
        produits.clear();
        quantite = 0;
        prixTotal = 0.0;
        prixProduits.clear();
    }
    public int nombreProduit(){
        return quantite;
    }
    public List<ProduitPresentation> getProduitDuPanier(){
        return produits;
    }

    public List<Double> getPrixProduits() {
        return prixProduits;
    }

    public void setPrixProduits(List<Double> prixProduits) {
        this.prixProduits = prixProduits;
    }
    
    public double getPrixTotal() {
        return prixTotal;
    }
    
    private void ajoutProduitDansPanier(ProduitPresentation p){
        boolean isNotFind = true;
        int i = 0;
        
        if((produits.isEmpty())||(produits.size() == 0)||(quantite == 0)){
            System.out.println("produit n'existe pas il est à créer");
            produits.add(p);
            System.out.println("p produit quantite : "+p.getQuantite());
            quantite+=p.getQuantite();
            prixProduits.add(p.getQuantite()*p.getPrix_produit());
            prixTotal+=p.getQuantite()*p.getPrix_produit();
        }else{
            while(isNotFind && i<produits.size()){
                if((produits.get(i).getCategorieProduit().equals(p.getCategorieProduit()))
                    &&(produits.get(i).getDescriptionProduit().equals(p.getDescriptionProduit()))
                    &&(produits.get(i).getImageProduit().equals(p.getImageProduit()))
                    &&(produits.get(i).getNom_produit().equals(p.getNom_produit()))
                    &&(produits.get(i).getPrix_produit() == p.getPrix_produit())
                    &&(produits.get(i).getReference_produit().equals(p.getReference_produit()))
                    &&(produits.get(i).getReference_store().equals(p.getReference_store()))){
                    isNotFind = false;
                }else{
                    i++;
                }
            }
            if(i==produits.size() && isNotFind){
                produits.add(p);
                quantite+=p.getQuantite();
                prixProduits.add(p.getQuantite()*p.getPrix_produit());
                prixTotal+=p.getQuantite()*p.getPrix_produit();
            }else{
                int qtite = produits.get(i).getQuantite() + p.getQuantite();
                produits.get(i).setQuantite(qtite);
                quantite+=p.getQuantite();
                prixProduits.add(produits.get(i).getQuantite()*produits.get(i).getPrix_produit());
                prixTotal+=p.getQuantite()*p.getPrix_produit();
            }
        }
    }
    private void deleteProduitDansPanier(ProduitPresentation p){
        System.out.println("delete du produit dans lel panier!!!!");
        if(!produits.isEmpty()){
            boolean isNotFind = true;
            int i = 0;            
            while(isNotFind && i<produits.size()){
                if((produits.get(i).getCategorieProduit().equals(p.getCategorieProduit()))
                    &&(produits.get(i).getDescriptionProduit().equals(p.getDescriptionProduit()))
                    &&(produits.get(i).getImageProduit().equals(p.getImageProduit()))
                    &&(produits.get(i).getNom_produit().equals(p.getNom_produit()))
                    &&(produits.get(i).getPrix_produit() == p.getPrix_produit())
                    &&(produits.get(i).getReference_produit().equals(p.getReference_produit()))
                    &&(produits.get(i).getReference_store().equals(p.getReference_store()))){
                    isNotFind = false;
                }else{
                    i++;
                }
            }if(i==produits.size() && isNotFind){
                System.out.println("Le produit n'as pas été retrouvé, suppression impossible!");
            }else{
                quantite-=produits.get(i).getQuantite();
                ProduitPresentation produitAdelete = produits.get(i); //permet d'avoir la bonne quantite de produit à enlever
                produits.remove(produitAdelete);
                prixTotal-=prixProduits.get(i);
                prixProduits.remove(i);
            }
        }
        /* for(int i=0;i<produits.size();i++){
            if(
                    (produits.get(i).getCategorieProduit().equals(p.getCategorieProduit()))
                &&(produits.get(i).getDescriptionProduit().equals(p.getDescriptionProduit()))
                &&(produits.get(i).getImageProduit().equals(p.getImageProduit()))
                &&(produits.get(i).getNom_produit().equals(p.getNom_produit()))
                &&(produits.get(i).getPrix_produit() == p.getPrix_produit())
                &&(produits.get(i).getReference_produit().equals(p.getReference_produit()))
                &&(produits.get(i).getReference_store().equals(p.getReference_store()))
                ){
                int qtite =produits.get(i).getQuantite();
                produits.get(i).setQuantite(qtite-p.getQuantite());
                if(produits.get(i).getQuantite() <= 0){
                    produits.remove(i);
                }
            }
            quantite-=p.getQuantite();
        }*/
    }
}
